package com.rem.designPattern.visitor访问者;

import java.util.ArrayList;
import java.util.List;

/**
 * 访问者模式
 * 表示一个作用于某对象结果结构的各元素的操作，它允许在不改变数据结构的前提下定义作用于这些元素的新的操作
 * <p>
 * 定义在家里给宠物喂食，家里来了朋友也可以给宠物喂食，宠物有猫，狗
 *
 * @author Rem
 * @date 2022-11-22
 */
public class Home {
    private final List<Animal> animals = new ArrayList<>();

    public void action(Person person) {
        for (Animal node : animals) {
            node.accept(person);
        }
    }

    public void add(Animal animal) {
        animals.add(animal);
    }
}